package stu.aistar.day02.method;

public class StaticDetailDemo {
    //定义了全局变量
    //属性,方法 => 成员
    //非静态的属性
    int n = 10;//等创建对象的时候,才会分配空间和初始化

    //静态属性-初始化的时机优先于静态方法
    static int m = 100;

    public static void main(String[] args) {
        //此时n还未初始化
        // System.out.println(n);//编译错误

        //System.out.println(m);

        //调用test03 - 非静态的
        StaticDetailDemo s = new StaticDetailDemo();
        s.test03();
        System.out.println(s.n);

        System.out.println(s);
    }
    //非静态的
    public void test01(){

        System.out.println("test01..");
    }

    //静态的
    public static void test02(){
        int n = 10;
        System.out.println("test02...");

        //自定义的方法中是可以调用自己自定义的方法的
        //1. 另外一个静态方法test04
        StaticDetailDemo.test04();
        //静态方法中可以直接调用静态方法
        test04();

        //2. 另外一个非静态方法test03
        StaticDetailDemo s1 = new StaticDetailDemo();
        s1.test03();
    }

    public void test03(){
        //static int n = 20;//非静态方法中允许定义静态的局部变量
        System.out.println("test03..");

        //非静态方法中调用静态方法 - 类名.方法
        //StaticDetailDemo.test04();//ok

        test04();//ok

        //非静态方法中直接调用另外一个非静态方法呢??? - 肯定是需要一个对象去调用.
        test01();//ok

        //实际上省略了一个关键字this

        //this代表的是当前对象
        //当前对象 - 调用该方法[test03]的对象
        //this.test01();
        System.out.println(this);
    }

    public static void test04(){

        System.out.println("test04..");
    }
}
